The need to store digital files, documents, pictures, images and other data continues to increase rapidly. In connection with the electronic storage of data, various data storage systems have been devised for the rapid and secure storage of large amounts of data. Such systems may include one or a plurality of storage devices that are used in a coordinated fashion. Systems in which data can be distributed across multiple storage devices such that data will not be irretrievably lost if one of the storage devices (or in some cases, more than one storage device) fails are also available. Systems that coordinate operation of a number of individual storage devices can also provide improved data access and/or storage times. Examples of systems that can provide such advantages can be found in the various RAID (redundant array of independent disks) levels that have been developed. Whether implemented using one or a plurality of storage devices, the storage provided by a data storage system can be treated as one or more storage volumes.
In order to facilitate the availability of desired data, it is often advantageous to maintain different versions of a data storage volume. Indeed, data storage systems are available that can provide at least limited data archiving through backup facilities and/or snapshot facilities. The use of snapshot facilities greatly reduces the amount of storage space required for archiving large amounts of data. However, there are still times where it is desirable to delete a snapshot to conserve storage space. An older snapshot may need data from a snapshot being deleted because master volume data is often only written to the newest snapshot when a write to the master volume data occurs. This fact leaves open the possibility that the older snapshot does not contain all of the preserved data from the master volume for the point in time when the older snapshot was taken. When a snapshot is being deleted, an older snapshot may need to access data from the snapshot being deleted. To accommodate this need in the past, all of the data from the snapshot being deleted that is needed by an older snapshot and is not on the older snapshot was copied to the older snapshot in a first step. Then after all of the qualified data from the snapshot being deleted was copied, the data of the deleted snapshot could be deleted. The process of copying the data from the snapshot being deleted to the older snapshot is burdensome due to the large amount of data that is being copied.
Also troublesome is the fact that no other device can access either the data being copied or the older snapshot receiving the copied data during the copying process due to the possibility of data corruption. When a read and/or write command for snapshot data being copied is received at a storage controller, the controller has to wait until the copying process is complete before executing the read and/or write command. Often times, it can take minutes or hours to copy snapshot data to an older snapshot, which means the read and/or write command can be delayed by minutes or hours. Waiting for hours or even minutes to execute a read and/or write command is generally not acceptable in current data storage systems.